Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEMORIES_TAG | No | The tag used for storing memories | #[[LLM/Memories]] |
| ROAM_API_TOKEN | Yes | Your Roam Research API token | |
| ROAM_GRAPH_NAME | Yes | Your Roam graph name | |
| HTTP_STREAM_PORT | No | Port for HTTP Stream communication | 8088 |
| CUSTOM_INSTRUCTIONS_PATH | No | Path to your custom instructions file (markdown) |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| roam_add_todo | Add a list of todo items as individual blocks to today's daily page in Roam. Each item becomes its own actionable block with todo status. NOTE on Roam-flavored markdown: For direct linking: use [[link]] syntax. For aliased linking, use alias syntax. Do not concatenate words in links/hashtags - correct: #[[multiple words]] #self-esteem (for typically hyphenated words). IMPORTANT: Before using this tool, ensure that you have loaded into context the 'Roam Markdown Cheatsheet' resource. |
| roam_fetch_page_by_title | Fetch page by title. Returns content in the specified format. |
| roam_create_page | Create a new standalone page in Roam with optional content, including structured outlines, using explicit nesting levels and headings (H1-H3). This is the preferred method for creating a new page with an outline in a single step. Best for:
|
| roam_create_outline | Add a structured outline to an existing page or block (by title text or uid), with customizable nesting levels. To create a new page with an outline, use the
|
| roam_import_markdown | Import nested markdown content into Roam under a specific block. Can locate the parent block by UID (preferred) or by exact string match within a specific page. If a |
| roam_search_for_tag | Search for blocks containing a specific tag and optionally filter by blocks that also contain another tag nearby or exclude blocks with a specific tag. This tool supports pagination via the |
| roam_search_by_status | Search for blocks with a specific status (TODO/DONE) across all pages or within a specific page. |
| roam_search_block_refs | Search for block references within a page or across the entire graph. Can search for references to a specific block or find all block references. |
| roam_search_hierarchy | Search for parent or child blocks in the block hierarchy. Can search up or down the hierarchy from a given block. |
| roam_find_pages_modified_today | Find pages that have been modified today (since midnight), with pagination and sorting options. |
| roam_search_by_text | Search for blocks containing specific text across all pages or within a specific page. This tool supports pagination via the |
| roam_search_by_date | Search for blocks or pages based on creation or modification dates. Not for daily pages with ordinal date titles. |
| roam_markdown_cheatsheet | Provides the content of the Roam Markdown Cheatsheet resource, optionally concatenated with custom instructions if CUSTOM_INSTRUCTIONS_PATH is set. |
| roam_remember | Add a memory or piece of information to remember, stored on the daily page with MEMORIES_TAG tag and optional categories. NOTE on Roam-flavored markdown: For direct linking: use [[link]] syntax. For aliased linking, use alias syntax. Do not concatenate words in links/hashtags - correct: #[[multiple words]] #self-esteem (for typically hyphenated words). IMPORTANT: Before using this tool, ensure that you have loaded into context the 'Roam Markdown Cheatsheet' resource. |
| roam_recall | Retrieve all stored memories on page titled MEMORIES_TAG, or tagged block content with the same name. Returns a combined, deduplicated list of memories. Optionally filter blocks with a specific tag and sort by creation date. |
| roam_datomic_query | Execute a custom Datomic query on the Roam graph for advanced data retrieval beyond the available search tools. This provides direct access to Roam's query engine. Note: Roam graph is case-sensitive. Optimal Use Cases for
List of some of Roam's data model Namespaces and Attributes: ancestor (descendants), attrs (lookup), block (children, heading, open, order, page, parents, props, refs, string, text-align, uid), children (view-type), create (email, time), descendant (ancestors), edit (email, seen-by, time), entity (attrs), log (id), node (title), page (uid, title), refs (text). Predicates (clojure.string/includes?, clojure.string/starts-with?, clojure.string/ends-with?, <, >, <=, >=, =, not=, !=). Aggregates (distinct, count, sum, max, min, avg, limit). Tips: Use :block/parents for all ancestor levels, :block/children for direct descendants only; combine clojure.string for complex matching, use distinct to deduplicate, leverage Pull patterns for hierarchies, handle case-sensitivity carefully, and chain ancestry rules for multi-level queries. |
| roam_process_batch_actions | Executes a sequence of low-level block actions (create, update, move, delete) in a single, non-transactional batch. Actions are executed in the provided order. For creating nested blocks, you can use a temporary client-side UID in a parent block and refer to it in a child block within the same batch. For actions on existing blocks, a valid block UID is required. Note: Roam-flavored markdown, including block embedding with |
| roam_fetch_block_with_children | Fetch a block by its UID along with its hierarchical children down to a specified depth. Returns a nested object structure containing the block's UID, text, order, and an array of its children. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |